package com.zyx.beancopy.copier;

import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Component;

/**
 * @author Yaxi.Zhang
 * @since 2022/4/21 11:24
 * desc: 根据 getter/setter 方法来实现属性拷贝，因此对两个bean属性的getter/setter方法有要求
 *       属性类型不同，不会拷贝
 *       泛型只在编译期起作用，不能依靠泛型来做运行期的限制；
 */
@Component
public class SpringBeanCopier {
    /** 对象转换 */
    public <K, T> T copy(K source, Class<T> target) throws IllegalAccessException, InstantiationException {
        T res = target.newInstance();
        BeanUtils.copyProperties(source, res);
        return res;
    }
}
